关闭

C++学习笔记01之类的基本实现过程(头文件的防卫式定义, 具体类的定义和实现, 函数的传递类型和返回类型)

标签: 学习笔记编程语言C++
515人阅读 评论(0) 收藏 举报
分类:

一、C++简介

       首先,C++是一门从C语言(过程式编程语言)演化过来的面向对象的编程语言(OOP)。相对于其它的面向对象的编程语言,如Java、C#,C++具有性能优化和底层开发的特点。同时,C++目前发行的标准有C++98、C++11、C++14(最新的),但作为程序猿而言,目前使用最多的仍是C++98。从一门编程语言的学习角度来看 ,语言本身与其标准库是学习的重点。


二、头文件与类的声明

1. C与C++对比:
关于数据和函数 C++引入类和对象的概念

class分类:Complex和String(with pointer)

2. C++程序基本形式

几种文件格式:.h .cpp .hpp

头文件的防卫式声明:

#ifndef _COMPLEX_
#define _COMPLEX_
……
#endif
class的声明:

准备数据和函数


三、构造函数

1.inline函数(内联)
2.访问级别(public, private, protected)
data和function不同,data一般有封装性
3.创建对象需要构造函数,构造函数名称一定与类的名称相同,无返回值

complex (double r = 0,double i = 0)
: re(r), im(i)
{  }
4.函数的overloading
只是函数名相同,但编译器能识别它们;


四、参数传递与返回值

1.ctor(构造函数)一般放在public区
A::getInstance().setup();
2.const member functions(常量成员函数)
不会改变函数内部数据内容
3.参数传递
两种形式:pass by value or reference(to const)
4.返回值传递
pass by value or reference(to const)
5.friend(友元)
相同class的各个objects互为friends


五、操作符重载与临时对象

操作符重载 overloading
操作符可重新定义
1.成员函数
隐藏的this指针
传递者无需知道接受者是以reference形式接收
2.class body之外的各种定义(definitions)
inline 内联函数
3.非成员函数

(无this)temp object(临时对象)
type();

inline complex
operator + (const complex& x)
{
       return x;
}
<<的重载:
ostream&
operator << (ostream& os, const complex& x) // 传引用,速度快
{
     return os << '(' << real(x) << ',' << imag(x) << ')';
}
共轭复数:
inline complex
conj (const complex& x)
{
    return complex(real(x), -imag(x)); // (局部)临时对象
}
最后,总结上面Complex类的实现过程:

1.防卫式定义;
2.类的定义,有构造函数(初值列),那些数据,那些函数(成员函数和非成员函数),内联函数,友元函数;
3.函数的传递类型和返回类型。



1
0
查看评论

C++中,类和函数分开定义声明和实现的方法

test.hpp #include #include #include #include #include "test.hpp" using namespace std; oneclazz::oneclazz(int input){ // 做些初始化相关的事 ...
  • jishan7
  • jishan7
  • 2016-09-14 17:19
  • 996

C++类(Class)的定义与实现

转载自:http://www.cnblogs.com/mr-wid/archive/2013/02/18/2916309.html(但是他的内容中有一些错误) 一、"类" 的介绍     在C++中, 用 "类" 来描述 &qu...
  • Rain722
  • Rain722
  • 2017-02-12 17:01
  • 1011

C++ 12.1 类的定义、声明、成员函数、数据成员

简介 数据成员一般声明为private,以实现信息的隐蔽 成员函数一般声明为public,以提供外界使用的接口 构造函数一般声明为public,以便创建类的对象 创建一个类类型的对象时,编译器会自动使用一个构造函数来初始化该对象,构造函数是一个特殊的、与类同名的成员函数,用于初始化每个数据成员来设置...
  • hlsdbd1990
  • hlsdbd1990
  • 2015-06-17 14:42
  • 1017

c++中类的定义与头文件的关系

class Stack; 此句只是作为Stack class的前置申明,只是将calss名次告诉编译器,并未提供此class的任何其他信息。前置申明使得我们可以进行类指针的定义,或以此class作为数据型别: //以下这种写法,必须先有class的前置申明才行 Stack *pt=0; vo...
  • wordwarwordwar
  • wordwarwordwar
  • 2014-08-28 11:56
  • 2258

C++中类的声明与其成员函数的定义分离--以提高类的复用性

=================================开始=======================================     当一个类被多个程序使用时,一般将类的声明(包含成员函数的声明)放在指定的头文件中,用户编程时,只需将这个头文件包...
  • u014131641
  • u014131641
  • 2016-04-10 09:15
  • 1648

c++链表类创建使用

我们知道,数组式计算机根据事先定义好的数组类型与长度自动为其分配一连续的存储单元,相同数组的位置和距离都是固定的,也就是说,任何一个数组元素的地址都可一个简单的公式计算出来,因此这种结构可以有效的对数组元素进行随机访问。但若对数组元素进行插入和删除操作,则会引起大量数据的移动,从而使简单的数据处理变...
  • qwangq
  • qwangq
  • 2016-08-15 16:46
  • 5475

c/c++ 函数类型和函数指针类型 详解

c/c++ 中数据结构跟指针真的是很强大 今天解释下 函数类型和函数指针类型 1.函数类型 在C语言中,函数也是一种类型,可以定义指向函数的指针。我们知道,指针变量的内存单元存放一个地址值, 而函数指针存放的就是函数的入口地址. 123456789101112131415#include vo...
  • feigegegegegegegeg
  • feigegegegegegegeg
  • 2016-09-08 11:41
  • 3697

C++定义类和对象的两种方式--对比Java

C++定义类和对象的两种方式–对比Java搞了一段时间java再回来搞C++,在有些地方会偶尔不太适应,例如,这里要说的对象的声明,Java和C++就有很大的不同。 比如说这里有一个类: //C++方式定义一个class class Son :public Dad { private: ...
  • Lv_Victor
  • Lv_Victor
  • 2016-09-01 23:00
  • 1800

定义一个空类型,里面没有任何成员变量和成员函数。对该类型求sizeof 结果?

结果为1 。为什么不是0?空类型实例中不包含任何信息,但是当我们声明该类型的实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例。至于占多少空间,由编译器决定。Visual Studio中每个空类型的实例占用1字节的空间。   如果在该类型中添加一个构造函数和析构函数,再对该类...
  • pingingchen
  • pingingchen
  • 2015-03-24 16:43
  • 1383

cpp——类——声明 定义 实现

概述 类是c++引入的核心数据类型,类是对数据和方法的封装,地位上与内置类型(复合类型)相同,只是一种自定义数据类型 声明 类的声明,又称类的前向声明,即forward declaration,告诉编译器class类型,但当前并不知道class具体细节,是不完全类型 类的声明只能用于指针(引用)...
  • mardax
  • mardax
  • 2017-02-10 15:56
  • 1222
    个人资料
    • 访问:30971次
    • 积分:1337
    • 等级:
    • 排名:千里之外
    • 原创:86篇
    • 转载:11篇
    • 译文:0篇
    • 评论:12条
    个人说明
    个人很喜欢的一句话, (摘自网络):
    时光荏苒,祝愿不要忘记曾经的初心

    本人现在是一名大二软件工程专业的学生, 每月会坚持更新, 本博客会总结, 整理, 分享个人学习的相关技术知识, 用来记录自己不断进步的历程, 当然内容会以Java为主线.

    虽然是技术博客, 但毕竟是人, 也有自己的情感, 所以, 有时也会分享一些有用的学习资源和一些学习经验和方法, 同时也会写一些其它方面上自己的感受和想法!

    或许我的博客不是写得非常好, 但每一篇文章绝对会用心写! 如果, 你发现有不足或者错误之处, 非常欢迎指出, 当然也欢迎各位小伙伴们来交流技术和学习感受.

    每天进步一点点, 共勉!

    博客专栏
    最新评论