C++基础---关于类

【一】string类

string s1;

s1=“Hello”;

cout<<s1<<endl;

s1=s1+"world";

cout<<s1<<endl;

string s2;

cout<<s2.size()<<endl;

cout<<s2.empty<<endl;

域运算符::

这是作用域,如果想在类的外部引用静态成员函数,或在类的外部定义成员函数都要用到。使用命名空间里的类型或函数也要用到(如:std::cout, std::cin, std::string 等等)

class Test

{

public: Test();

        static void print()

        { std::cout<<"Test"<<endl; //命名空间时使用:: }

private:

int a; };

Test::Test() : a(1) //定义时使用::

{}

Test::get(); //使用静态成员函数时用::

C++中的private, public, protected

1.在 private 访问说明符下定义的成员只能在同一个类中访问,它们在派生类或程序的任何其他类中是不可访问的。

类用于指定对象的形式,它包含了数据和用于处理数据的方法,可以把类当作自定义的数据类型

2.访问权限:

默认访问权限private

(1)public公有权限:一个类的public成员变量,成员函数,可以通过类的成员函数,类的实例变量进行访问

(2)protecte保护权限,一个类的protected成员变量,成员函数,无法通过类的实例变量进行访问

可以通过公有函数接口与友元函数,友元类进行访问。

(3)private私有权限:一个类的private成员变量,成员函数,无法通过类的实例变量进行直接访问

可以通过公有函数接口与友元函数,友元类进行访问。

对象:实例化一个事物,成为某个具体事物的一个个体,创建对象后才会分配具体内存空间

3.创建方式:

静态创建 Human perso;

动态创建Human *perso=new Human;

4.访问属性及方法

针对非指针类型创建的对象

针对指针类型创建的对象

构造函数

1.默认构造函数

如果没有人为实现默认构造函数,那么可以理解为编译器会自动生成一个默认构造函数

当使用无参构造函数静态创建一个对象的时候,不能添加小括号,编译器默认此为函数声明。

2.构造函数的重载

3.初始化列表(使用:符号)

在初始化时,也可以使用初始化列表的方式来实现构造函数,一般用在继承中

4.拷贝构造函数

(1)当一个对象需要通过另一个对象初始化,则需要使用拷贝构造函数

(2)什么时候调用拷贝构造函数

主动创建对象时,用一个对象去初始化另一个对象的时候

一个对象以值传递的形式传入函数体

一个对象以值的形式从函数返回

(3)注意事项

编译器默认生成的拷贝构造函数为浅拷贝

如果实现了拷贝构造函数,那么编译器不会生成默认构造函数,反之如果实现了默认构造函数,那么编译器还是会生成一个默认拷贝构造函数

const关键字可以省略,但是引用&不能省略,原因在于如果省略,那么形参接受值传递时发生拷贝构造,导致死循环

关于指针,因此除非与new一起使用,否则将不会调用任何构造函数

(4)浅拷贝与深拷贝

浅拷贝:默认拷贝构造函数为浅拷贝

浅拷贝对指针类型变量,仅拷贝对应内存地址,不会新开辟内存地址空间

深拷贝:人为重载拷贝构造函数,新开辟一段内存空间

(5)explicit

含义:(1)explict关键字只能用来修饰类的构造函数,且最好只修饰只有一个参数的构造函数

(2)被修饰的构造函数不能发生相应的隐式类型转换,只能以显式的方式进行类型转换

隐式拷贝构造函数

(1)一个对象作为函数参数,以值传递的方式传入函数体

(2)一个对象作为函数返回值,以值传递的方式从函数返回

(3)以A a=b的方式构造a,其中b也是A类型

(4)拷贝构造函数一般不会设计成禁止隐式转化

析构函数

在销毁对象时自动调用此函数,往往用来释放对象之内申请的资源

定义:与类名相同,在前面加取反符~。且不能有任何参数和返回值

特点:

(1)没有参数没有返回值,但有this指针

(2)析构函数不能用const修饰

(3)一个类有且只有一个析构函数,所以肯定不能重载

(4)如果不手动销毁对象指针,程序运行结束时,编译器将不会进行处理,操作系统会之间进行内存回收,因此不会调用析构函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值