类的构造函数

构造函数

a.构造函数名必须与类名相同,不得声明返回类型;

b.可以用行参形式为成员赋初值,可以重载;

c.返回一个不能传递的指向其定义对象首地址的指针;

d.不带任何参数的称为缺省构造函数;

e.有个特殊的初始化方式叫“初始化表达式表”(简称初始化表)。初始化表位于函数参数表之后、函数体{}之前,规则:

①若有继承,派生类必须在初始化表里调用基类的构造函数;

class B:public A {…};

B::B(int x,int y):A(x) {};

②类的const常量只能在初始化表里被初始化,在函数体内不能被赋值;

class F
{
 public:
    F(int x,int y);
 private:
    int mx,my;
    int mi,mj;
}

类的成员初始化可以采用初始化表或者函数体内赋值两种方式。

F::F(int x,int y) : mx(x),my(y)
{ mi=0;mj=0;}
F:F(int x,int y)
{ mx=x;my=y;mi=0;mj=0;}

时间: 2025-01-30 16:50:36

类的构造函数的相关文章

高质量C++/C编程指南-第9章-类的构造函数、析构函数与赋值函数(4)

类String的赋值函数比构造函数复杂得多,分四步实现: (1)第一步,检查自赋值.你可能会认为多此一举,难道有人会愚蠢到写出 a = a 这样的自赋值语句!的确不会.但是间接的自赋值仍有可能出现,例如 // 内容自赋值 b = a; - c = b; - a = c; // 地址自赋值 b = &a; - a = *b; 也许有人会说:"即使出现自赋值,我也可以不理睬,大不了化点时间让对象复制自己而已,反正不会出错!" 他真的说错了.看看第二步的delete,自杀后还能复制自

普通类的构造函数为模板,在类外特化后如何调用[求赐教吖~

问题描述 普通类的构造函数为模板,在类外特化后如何调用[求赐教吖~ eg. struct A { A(int); //#1 template A(T); //#2 }; template<> A::A(int i){} //#3 void test(){ //在此处如何调用#3?????? } 解决方案 新手,来灌灌水,别介意! 解决方案二: struct是结构体吧,当然在C++,它也算是一种特殊的类,你的模板构造函数特化后,该怎么用还是怎么用,它实例化对象的时候会自动调用

(一一六)类的构造函数和析构函数

类构造函数: 构造函数 是专门用于构造新对象.将值赋给它们的数据成员. C++为这些成员提供了名称和使用语法,而程序员需要提供方法定义.名称与类名相同. 例如:Stock类的一个可能的构造函数是名为Stock()的成员函数. 构造函数的原型和函数头有一个有趣的特征--虽然没有返回值,但没有被声明为void类型.实际上,构造函数没有声明类型.     声明和定义构造函数: 和使用普通函数(根据传递的参数给私有成员赋值)几乎一样,除了构造函数的函数名需要和类名保持一致. 例如: void Playe

c++ 类 复制构造函数,析构函数

问题描述 c++ 类 复制构造函数,析构函数 c++类, 复制构造函数中产生的对象在程序结束后或运行中 会不会被析构 解决方案 只要程序正常运行,正常关闭,都会执行析构函数.如果你有疑问,你可以自己试验下. 解决方案二: 贴出你完整的代码 析构函数对于每个对象的实例只调用一次. 解决方案三: 1.如果没有显示定义复制构造函数或赋值操作符,编译器通常会为我们定义. 2.复制构造函数.赋值操作符.析构函数总称复制控制.编译器自动实现这些操作,蛋类也可以定义自己的版本. 3.有一种特别常见的情况需要类

ThinkPHP中__initialize()和类的构造函数__construct()用法分析_php实例

本文实例分析了ThinkPHP中的__initialize()和类的构造函数__construct().分享给大家供大家参考.具体分析如下: thinkphp中的__construct是不可以随便用的,因为你的模块类继承上级类,上级类有定义好的; 1.__initialize()不是php类中的函数,php类的构造函数只有__construct(). 2.类的初始化:子类如果有自己的构造函数(__construct()),则调用自己的进行初始化,如果没有,则调用父类的构造函数进行自己的初始化.

《C++语言基础》实践参考——三角形类的构造函数

返回:贺老师课程教学链接 [项目1-三角形类的构造函数] 设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化,可以由下面的类声明开始,需要自己实现相关的成员函数,以及增加要求的构造函数 class Triangle { public: double perimeter();//计算三角形的周长 double area();//计算并返回三角形的面积 void showMessage(); private: double a,b,c; //三边为私有成员数据 }; void Triang

C++聚合关系类的构造函数的调用顺序详解_C 语言

如图,表示一个聚合关系 下面就用简单的代码来实现 #pragma once class Engine { public: Engine(); ~Engine(); }; Engine.h #include <iostream> #include "Engine.h" using namespace std; Engine::Engine() { cout << "调用构造函数:Engine()" << endl; } Engine

浅谈Python类里的__init__方法函数,Python类的构造函数_python

如果某类里没有__init__方法函数,通过类名字创建的实例对象为空,切没有初始化:如果有此方法函数,通常作为类的第一个方法函数,有点像C++等语言里的构造函数. class Ca: def __init__(self, v): # 注意前后各两个下划线 self.name = v def pr(self): print "a--->", self.name ia = Ca("Jeapedu") # 本质调用的是__init__方法函数 ia.pr() Ca.

C++语言基础 例程 派生类的构造函数和析构函数

贺老师的教学链接  本课讲解 一个简单派生类的定义 #include <iostream> #include<cstring> using namespace std; class Student //声明基类Student { public: Student(int n,string nam,char s):num(n),name(nam),sex(s) {} //基类构造函数 ~Student( ) { } //基类析构函数 void show( ) { cout<<