c++的构造函数

我刚学的知识:c++的构造函数。
在在此之前一直都处于迷惑之中,现在怕忘。所以赶紧把他写下来,用来以后复习,可能有错误的地方,请大牛们指出来。
c++知识相对与c来说更加抽象,但真明白了,也就那一回事。这话是学长说的,而我刚把构造函数学会,还在晕着别的地方。
c++的构造函数分为3种:
//一。不带参的构造函数
class car
{
public:
?car()
?{
??cout << "123" << endl;
?}
?~car()
?{
??cout << "123" << endl;
?}
};
int main()
{
?car a;
?return 0;
}//结果会输出俩个123
//二。带参的构造函数
class car
{
 int a;//在c++中如果没有表明数据类型,系统默认为private型
 int b;
public:
 car(int a,int b)//定义了一个代参的构造函数
 {
  cout << a << b << endl;
 }
 ~car()
 {
  cout << "123" << endl;
 }
 
};
int main()
{
 car a(1,2);
 return 0;
}//结果会输出俩个123
三。委托构造函数
class clock
{
public:
 clock(int a, int b, int c);
 void timegive(int newH, int newM, int newG);
 void timeshow();
 clock() :clock(0, 0, 0){}//c++中为避免构造函数的多次出现,而且方便修改构造函数的值,故用委托构造函数
private:
 int hour, minute, second;
};
clock::clock(int a, int b, int c) //为类的对象进行初始化//一
{
 hour = a;
 minute = b;
 second = c;
}
void clock::timegive(int newH, int newM, int newG)
{
 hour = newH;
 minute = newM;
 second = newG;
}
void clock::timeshow()
{
 cout << hour << ":" << minute << ":" << second;
}
int main()
{
 clock c1(0, 0, 0);
 clock c2;
 c1.timeshow();
 c2.timeshow();
}
四。复制构造函数

//构造函数的复制函数
class car
{
public:
 car(); //构造函数
 car(const car &s); //    & 引用符    s  复制构造函数开始时先定义一个供引用的对象,将对象car中的数据成员值复制过来
 ~car(); //析构函数
 void print();
private:
 int x;
 int y;//数据成员ptr指向分配的字符串
};
car::car()
{
 int x = 10;
 int y = 12;
}
car::car(const car &s)
{
 x = s.x;
 y = s.y;
 cout << "已完成拷贝" << endl;
}
void car::print()
{
 cout << x << ":"<<y<<endl;
}
int main()
{
 car lol;
 car qwe(lol);
 return 0;
}
//const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。在学引用时我们会发现引用是二者都会改变

刚刚学习请多指教

时间: 2024-10-05 12:14:07

c++的构造函数的相关文章

【转载】C++拷贝构造函数(深拷贝,浅拷贝)

对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.下面看一个类对象拷贝的简单例子. #include <iostream>using namespace std;class CExample {private:     int a;public:     CExample(int b)     { a=b;}     void Show ()     {        cout<

C++程序设计方法3:移动构造函数

移动拷贝构造函数 语法: ClassName(ClassName&&); 目的: 用来偷"临时变量"中的资源(比如内存) 临时变量被编译器设置为常量形式,使用拷贝构造函数无法将资源偷出来("偷"是对原来对象的一种改动,违反常量的限制) 基于"右值引用"定义的移动构造函数支持接受临时变量,能偷出临时变量中的资源: #include <iostream> using namespace std; class Test {

父类的构造函数在对象的生命中扮演的角色

在创建新对象时,所有继承下来的构造函数都会被继承 这代表着每个父类都有一个构造函数(因为每个类至少都会有一个构造函数),并且每个构造函数都会在对象创建时执行. 执行new的指令是个大事件,因为他会启动构造函数的连锁反应.还有,就算是抽象的类也有构造函数.虽然你不能对抽象函数执行new操作,但是抽象函数还是父类,因此它的构造函数会在具体的子类创建实例时被执行. 在构造函数中用super调用父类的构造函数部分(注意:调用super() 方法是调用父类构造函数的唯一方法).要记得子类会根据父类的状态进

JavaScript中的构造函数

function Accom(){};    //创建一个构造函数 //创建两个对象 var house=new Accom(); var apartment=new Accom(); 通过构造函数创建的对象有一个属性constructor,这个属性指向创建该对象时所用的Javascript构造函数. house.constructor===Accom;  或者   house instanceof Accom;     //true JavaScript中的每个构造函数都有一个prototyp

javascript中的构造函数和原型及原型链

纯属个人理解,有错误的地方希望大牛指出,以免误人子弟 1.构造函数: 构造函数的作用 : 初始化由new创建出来的对象    new 的作用: 创建对象(空对象) new 后面跟的是函数调用,使用new来调用函数,跟普通的直接调用函数主要的不同: 就是 this 的指向不同了 , 再就是 会自动的返回新创建的对象 什么是原型?        原型的作用:就是为了实现继承!  一个对象的原型就是它的构造函数的prototype属性的值. 在讨论原型的时候,是指的 对象和原型对关系 prototyp

Resolve Type中构造函数传值

1 1 class Test 2 { 3 4 private ITeacher _teacher; 5 private IStudent _student; 6 public Test(ITeacher tea, IStudent stu) 7 { 8 _teacher = tea; 9 _student = stu; 10 } 11 } 2 1 class Student:IStudent 2 { 3 4 public Student() 5 { 6 int i = 1; 7 } 8 9 10

构造函数、拷贝构造函数、赋值操作符

对于这样一种类与类之间的关系,我们希望为其编写“深拷贝”.两个类的定义如下: class Point { int x; int y; }; class Polygon : public Shape { Point *points; }; 1. 构造函数 //构造函数 Polygon(const Point &p) : _point(new Point) { this->_point->x = p.x; this->_point->y = p.y; } 2. 拷贝构造函数 /

JAVA_SE基础——29.构造函数

黑马程序员入学Blog... jvm创建Java对象时候需要调用构造器,默认是不带参数的.在构造器中,你可以让jvm帮你初始化一些参数或者执行一系列的动作. 它是对象创建中执行的函数,及第一个被执行的方法 特点: 1.函数名与类名相同. 2.不用定义返回值类型. 3.没有具体的返回值. P.S. 在构造函数前面加上返回值就只是一般函数了. 作用:给对象进行初始化. class Person{ private String name ; private int age ; //定义一个Person

C++ 构造函数和析构函数

构造函数: 作用: 1)分配空间:分配非静态数据成员的存储空间 2)初始化成员:初始化非静态数据成员 分配空间: 1)含有指针变量,需要程序员显式申请空间(使用new申请) 2)非指针变量:由系统自动分配空间 初始化成员: 1)使用赋值语句初始化:一般的变量 2)使用表达式表初始化:一般的变量 +  Const成员,引用成员,对象成员 调用时机:在定义对象的时候,系统自动调用构造函数 1)对象被创建时,自动调用构造函数 Coord p1(1); Coord p2=1;  //此时也会调用构造函数

构造函数和析构函数是否可以被重载

构造函数可以被重载,因为构造函数可以有多个且可以带参数. 析构函数不可以被重载,因为析构函数只能有一个,且不能带参数.