C++学习笔记-----类和构造函数

类和结构体

classstruct的区别在于class默认是private的而struct默认是public的
struct 继承自另一个 struct 或 class 时,默认继承方式是 public 继承
class 继承自另一个 class 或 struct 时,默认继承方式是 private 继承
class 继承自 struct,则默认继承方式还是 public,以保持 struct 的开放性
两者的内存位置取决于其声明创建的位置,局部函数则存于栈,全局则存于全局区

构造函数和析构函数

构造函数:非成员函数,并且在创建对象时由编译器自动调用执行一次,可以重载
析构函数:在对象销毁时自动调用,回收内存空间,只有一个并且无参
构造函数可以在创建对象时使用小括号把构造参数传进去,以下是构造函数中无参、有参、拷贝的示例:

class Person{
public:
	int age;
	Person(){
		cout<<"non-parameter constructor "<<endl;
	}
	Person(int a){
		age = a;
		cout<<"Parameterized constructor"<<endl;
	}
	Person(const Person &p){
		age = p.age;
		cout<<"copy constructor "<<endl;
	}
	~Person(){
		cout<<"Destructor function call "<<endl;
	}
};
void test(){
	Person p1;
	Person p2(10);
	Person p3(p2);
}
int main(){
	
	test();
	
	system("pause");
	return 0;
}

新建一个类,编译器会提供默认的无参构造函数、拷贝构造函数、析构函数,如果自己写了对应的函数,编译器就不再提供对应的函数,例如以上的Person Clas,编译器不再提供对应的构造函数和析构函数;
值得一提的是编译器提供的拷贝构造函数是浅拷贝,只是简单的复制,如果要进行深拷贝必须自己重载拷贝构造函数;

嵌套对象和初始化列表

  • 在一个类中使用另一个对象作为成员对象,会先构造成员对象,然后再构造外层对象,析构释放资源的顺序则正好相反;
  • 初始化列表只能用于普通构造函数,拷贝构造、析构、成员函数等不能使用;用来对类中声明的成员变量进行初始化,初始化的顺序与类中声明的顺序一致;格式为:构造函数名(形参列表):成员属性1(表达式1),成员属性2(表达式2),成员属性3(表达式3)... {函数体}
posted @   万舜  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示