由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问个template
相关主题
C++方法全都内联有什么坏处?怎么隐藏c++template代码?只提供lib 不提供头文件
问一下,DLL里面怎么调用外部类啊?设计一种c++语言的新特性
visual studio 编译器怎么关掉warning?inline function是否可以递归?
[合集] 关于template和inheritance的问题请教c++ inline问题 (转载)
两个class的交叉引用问题C编译器为何允许一个函数在某个路径不返回值?
c function 在 c里调用和C++调用结果不一样C++11的lambda不会破坏可读性吗?
一个C++ template的问题inline function到底能省多少时间?
C++ templates另一个Fortran 问题
相关话题的讨论汇总
话题: template话题: cpp话题: 定义话题: inline话题: 编译
进入Programming版参与讨论
1 (共1页)
z****e
发帖数: 2024
1
我不是很熟template这块,有个问题是关于编译的,
如果template放到一个头文件,然后很多cpp include,是没事的。
这个编译的时候是怎么回事?
STL不就这样么?每一个cpp都include一模一样的完整头文件。也没事啊。怎么回事?
X****r
发帖数: 3557
2
你说说为什么会有事?
有时候好像你研究得很深的样子,有时候很基础的东西都不明白,
所以我说你去做程序员可惜了。

【在 z****e 的大作中提到】
: 我不是很熟template这块,有个问题是关于编译的,
: 如果template放到一个头文件,然后很多cpp include,是没事的。
: 这个编译的时候是怎么回事?
: STL不就这样么?每一个cpp都include一模一样的完整头文件。也没事啊。怎么回事?

z****e
发帖数: 2024
3
我就是不行啊,没经验,没工作,一穷二白。
基本的也不清楚了。
template不也重复定义了吗?如果在很多cpp里边include的话,难道不算重复定义?

【在 X****r 的大作中提到】
: 你说说为什么会有事?
: 有时候好像你研究得很深的样子,有时候很基础的东西都不明白,
: 所以我说你去做程序员可惜了。

X****r
发帖数: 3557
4
好,那我问你,先不说template,就是一个普通的class,它在头文件里定义的,
被很多cpp包含,算不算重复定义?

【在 z****e 的大作中提到】
: 我就是不行啊,没经验,没工作,一穷二白。
: 基本的也不清楚了。
: template不也重复定义了吗?如果在很多cpp里边include的话,难道不算重复定义?

z****e
发帖数: 2024
5
不算啊,那些是类型,又不是对象。

【在 X****r 的大作中提到】
: 好,那我问你,先不说template,就是一个普通的class,它在头文件里定义的,
: 被很多cpp包含,算不算重复定义?

z****e
发帖数: 2024
6
但是如果class的成员函数,就要放在cpp里边。

【在 X****r 的大作中提到】
: 好,那我问你,先不说template,就是一个普通的class,它在头文件里定义的,
: 被很多cpp包含,算不算重复定义?

X****r
发帖数: 3557
7
是啊,你已经基本上回答了你自己的问题。那是模板,又不是对象。

【在 z****e 的大作中提到】
: 不算啊,那些是类型,又不是对象。
z****e
发帖数: 2024
8
是啊,突然明白了,红猪侠醍醐灌顶。
编译器当时不需要分配内存,分配地址,所以没有重复定义。
但是分配地址的时候,就是定义了。

【在 X****r 的大作中提到】
: 是啊,你已经基本上回答了你自己的问题。那是模板,又不是对象。
X****r
发帖数: 3557
9
是吗?那么对于以下的写法,A::getX也会有重复定义的问题吗?
class A {
public:
int getX() { return x; }
private:
int x;
};

【在 z****e 的大作中提到】
: 但是如果class的成员函数,就要放在cpp里边。
z****e
发帖数: 2024
10
你这个是inline的,所以没事。
但是拿到外边,不加inline keyword定义的话,就要放到cpp了。

【在 X****r 的大作中提到】
: 是吗?那么对于以下的写法,A::getX也会有重复定义的问题吗?
: class A {
: public:
: int getX() { return x; }
: private:
: int x;
: };

相关主题
c function 在 c里调用和C++调用结果不一样怎么隐藏c++template代码?只提供lib 不提供头文件
一个C++ template的问题设计一种c++语言的新特性
C++ templatesinline function是否可以递归?
进入Programming版参与讨论
X****r
发帖数: 3557
11
从C++语言的角度讲,one definition rule有两个主要方面:
一是在同一个translation unit里面,几乎所有东西都最多只能定义一次。
二是在同一个程序里,几乎所有被用到的对象和非inline的函数必须定义恰好一次。
两条都有一些例外,比如就class template来说,它的静态数据成员可以不符合二。

【在 z****e 的大作中提到】
: 是啊,突然明白了,红猪侠醍醐灌顶。
: 编译器当时不需要分配内存,分配地址,所以没有重复定义。
: 但是分配地址的时候,就是定义了。

z****e
发帖数: 2024
12
恩。这个应付面试应该足够了。

【在 X****r 的大作中提到】
: 从C++语言的角度讲,one definition rule有两个主要方面:
: 一是在同一个translation unit里面,几乎所有东西都最多只能定义一次。
: 二是在同一个程序里,几乎所有被用到的对象和非inline的函数必须定义恰好一次。
: 两条都有一些例外,比如就class template来说,它的静态数据成员可以不符合二。

N***m
发帖数: 4460
13
你们简直不是人!!!
这么复杂的东西是用来应付面世的?

【在 z****e 的大作中提到】
: 恩。这个应付面试应该足够了。
t****t
发帖数: 6806
14
自己没写过要背出来, 当然觉得复杂了
自己写过的话, 自然而然就记住了
所以这种面试其实就是看你写过多少东西, 而且这个绝对假装不来的

【在 N***m 的大作中提到】
: 你们简直不是人!!!
: 这么复杂的东西是用来应付面世的?

P********e
发帖数: 2610
15
这个牛
inline在编译的时候是方到什么地方?如果可重复定义的。

【在 X****r 的大作中提到】
: 从C++语言的角度讲,one definition rule有两个主要方面:
: 一是在同一个translation unit里面,几乎所有东西都最多只能定义一次。
: 二是在同一个程序里,几乎所有被用到的对象和非inline的函数必须定义恰好一次。
: 两条都有一些例外,比如就class template来说,它的静态数据成员可以不符合二。

z****e
发帖数: 2024
16
cpp

【在 P********e 的大作中提到】
: 这个牛
: inline在编译的时候是方到什么地方?如果可重复定义的。

P********e
发帖数: 2610
17
我说编译的时候和其他函数放的地方不一样吗?
还是变异的时候不编译inline

【在 z****e 的大作中提到】
: cpp
N***m
发帖数: 4460
18
外事不觉问google阿。
有那么多东西要学,自己写code太麻烦了。

【在 t****t 的大作中提到】
: 自己没写过要背出来, 当然觉得复杂了
: 自己写过的话, 自然而然就记住了
: 所以这种面试其实就是看你写过多少东西, 而且这个绝对假装不来的

S**I
发帖数: 15689
19
inline只是一个suggestion,是否采纳取决于编译器。

【在 P********e 的大作中提到】
: 我说编译的时候和其他函数放的地方不一样吗?
: 还是变异的时候不编译inline

z****e
发帖数: 2024
20
inline只是一个申请,具体要看编译器了。可能:
1.inline直接展开。
2.普通函数。

【在 P********e 的大作中提到】
: 我说编译的时候和其他函数放的地方不一样吗?
: 还是变异的时候不编译inline

t****t
发帖数: 6806
21
人家雇你不就是为了写code吗? 你嫌写code麻烦, 不要找写code的工作好了.
有那么多东西要学? 你想错了, 找工作不需要什么都会. 什么都会的半吊子远远不如专
精一门的.

【在 N***m 的大作中提到】
: 外事不觉问google阿。
: 有那么多东西要学,自己写code太麻烦了。

1 (共1页)
进入Programming版参与讨论
相关主题
另一个Fortran 问题两个class的交叉引用问题
【请教】mpicc 和 mpiCC编译问题c function 在 c里调用和C++调用结果不一样
一些初级问题一个C++ template的问题
[合集] 6个变态的C语言写的Hello World (ZZ)C++ templates
C++方法全都内联有什么坏处?怎么隐藏c++template代码?只提供lib 不提供头文件
问一下,DLL里面怎么调用外部类啊?设计一种c++语言的新特性
visual studio 编译器怎么关掉warning?inline function是否可以递归?
[合集] 关于template和inheritance的问题请教c++ inline问题 (转载)
相关话题的讨论汇总
话题: template话题: cpp话题: 定义话题: inline话题: 编译